Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.9K
Vistas
¿Cómo redondear/eliminar los ceros finales ".0" en la columna de pandas?

Estoy tratando de ver si puedo eliminar los ceros finales de esta columna de número de teléfono.

Ejemplo:

 0 1 8.00735e+09 2 4.35789e+09 3 6.10644e+09

El tipo de esta columna es un objeto e intenté redondearlo, pero recibo un error. Revisé un par de ellos, sé que están en este formato "8007354384.0", y quiero deshacerme de los ceros finales con el punto decimal.

A veces recibí en este formato ya veces no, serán números enteros. Me gustaría verificar si la columna del teléfono tiene un cero final y luego eliminarlo.

Tengo este código pero estoy atascado en cómo verificar los ceros finales para cada fila.

 data.ix[data.phone.str.contains('.0'), 'phone']

Recibo un error => *** ValueError: cannot index with vector containing NA / NaN values . Creo que el problema se debe a que algunas filas tienen datos vacíos, que en algún momento recibo. El código anterior debería poder omitir una fila vacía.

¿Alguien tiene alguna sugerencia? Soy nuevo en pandas pero hasta ahora es una biblioteca útil. Su ayuda será apreciada.

Nota El ejemplo proporcionado arriba, la primera fila tiene datos vacíos, lo cual a veces obtengo. Solo para asegurarse de que esto no se represente como 0 para el número de teléfono.

También los datos vacíos se consideran una cadena, por lo que es una combinación de flotantes y cadenas, si las filas están vacías.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

usar astype(np.int64)

 s = pd.Series(['', 8.00735e+09, 4.35789e+09, 6.10644e+09]) mask = pd.to_numeric(s).notnull() s.loc[mask] = s.loc[mask].astype(np.int64) s 0 1 8007350000 2 4357890000 3 6106440000 dtype: object
over 4 years ago · Santiago Trujillo Denunciar

0

En Pandas/NumPy, los enteros no pueden tomar valores NaN, y las matrices/series (incluidas las columnas de marco de datos) son homogéneas en su tipo de datos, por lo que tener una columna de enteros donde algunas entradas son None / np.nan es absolutamente imposible .

EDITAR: data.phone.astype('object') debería hacer el truco; en este caso, Pandas trata su columna como una serie de objetos genéricos de Python, en lugar de un tipo de datos específico (por ejemplo, str / float / int ), a costa del rendimiento si tiene la intención de ejecutar cálculos pesados con estos datos (probablemente no en Tu caso).

Suponiendo que desea conservar esas entradas de NaN, su enfoque de conversión a cadenas es una posibilidad válida:

data.phone.astype(str).str.split('.', expand = True)[0]

debería darle lo que está buscando (hay métodos de cadena alternativos que puede usar, como .replace o .extract , pero .split parece el más sencillo en este caso).

Alternativamente, si solo está interesado en la visualización de flotadores (supongo que es poco probable), puede hacer pd.set_option('display.float_format','{:.0f}'.format) , que en realidad no afecta tu información.

over 4 years ago · Santiago Trujillo Denunciar

0

Esta respuesta de cs95 elimina el ".0" final en una fila.

 df = df.round(decimals=0).astype(object)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda